<?php

/**
 * Список результатов поиска назначений.
 *
 */
abstract class Kernel_Component_FilteredList_List extends Kernel_Action_List {

    /**
     * Наименование таблицы (представления), из которой нужно получать данные.
     *
     * @var string
     */
    public $table = '';

    /**
     * Ассоциативный массив полей запроса на параметры фильтрации. Отсекаем от
     * полной даты назначения (DATETIME) только дату для фильтрации.
     *
     * @var array
     */
    protected $_filter_map = array('date' => 'DATE(`date`)');

    /**
     * Формирует запрос выборки записей страницы. Запрос должен содержать
     * инструкцию SQL_CALC_FOUND_ROWS для списков с постраничным разбиением.
     *
     * @return  string
     */
    protected function _getQueryBody() {
        $query = 'SELECT SQL_CALC_FOUND_ROWS
                         *
                    FROM
                         `' . $this->table . '`';

        if (strlen($condition = $this->_getFilter()) > 0) {
            $query .= '
                   WHERE
                         ' . $condition;
        }

        return $query;
    }
}
